home *** CD-ROM | disk | FTP | other *** search
- From: brad@hcx1.ssd.csd.harris.com (Brad Appleton)
- Newsgroups: comp.sources.misc
- Subject: v17i075: parseargs - functions to parse command line arguments, Patch03
- Message-ID: <1991Mar29.192517.5209@sparky.IMD.Sterling.COM>
- Date: 29 Mar 91 19:25:17 GMT
- Approved: kent@sparky.imd.sterling.com
- X-Checksum-Snefru: 00fcdb2d decc6041 be60ca5f 585ee4a4
-
- Submitted-by: Brad Appleton <brad@hcx1.ssd.csd.harris.com>
- Posting-number: Volume 17, Issue 75
- Archive-name: parseargs/patch03
- Patch-To: parseargs: Volume 17, Issue 45-57
-
- This is a patch for the ascii version of the parseargs documentation.
-
- It corresponds to the previous patch (patch2) that I sent.
-
- ______________________ "And miles to go before I sleep." ______________________
- Brad Appleton Harris Corp., Computer Systems Division
- Software Engineer 2101 West Cypress Creek Road, M/S 161
- brad@ssd.csd.harris.com Fort Lauderdale, FL 33309-1892 USA
- ...!uunet!hcx1!brad Phone: (305) 973-5360
- ~~~~~~~~~~~~~~~~~~~~ Disclaimer: I said it, not my company! ~~~~~~~~~~~~~~~~~~~
- #! /bin/sh
- # This is a shell archive. Remove anything before this line, then unpack
- # it by saving it into a file and typing "sh file". To overwrite existing
- # files, type "sh file -c". You can also feed this as standard input via
- # unshar, or by typing "sh <file", e.g.. If this archive is complete, you
- # will see the following message at the end:
- # "End of shell archive."
- # Contents: PATCH
- # Wrapped by brad@hcx2 on Tue Mar 26 12:05:39 1991
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f 'PATCH' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'PATCH'\"
- else
- echo shar: Extracting \"'PATCH'\" \(36746 characters\)
- sed "s/^X//" >'PATCH' <<'END_OF_FILE'
- X*** argtype3.txt.OLD Tue Mar 26 12:01:39 1991
- X--- argtype3.txt Tue Mar 26 11:59:44 1991
- X***************
- X*** 38,54 ****
- X DESCRIPTION
- X Each of these converts a parameter value to the internal
- X form, including validity checking. Their parameters and
- X! return values all behave similarly. One of these routines
- X! are called when an argunent of that particular type is
- X! matched by one of the argument parsing function in par-
- X! seargs(3). When such an argument is matched, its argument
- X! translation routines is invoked and is passed (1) the
- X! address of the argument descriptor for the matched argument,
- X! (2) the possible argument string for that matched argument,
- X! and (3) a boolean filed that is TRUE only if the second
- X! parameter points to temporary storage (indicating that some
- X! copying may need to be done instead of just pointing to the
- X! same object).
- X
- X Once the argument translation routine is invoked, it is
- X responsible for converting the argument string to the
- X--- 38,54 ----
- X DESCRIPTION
- X Each of these converts a parameter value to the internal
- X form, including validity checking. Their parameters and
- X! return values all behave similarly. One of these routines is
- X! called when an argument of that particular type is matched
- X! by one of the argument parsing function in parseargs(3).
- X! When such an argument is matched, its argument translation
- X! routines is invoked and is passed (1) the address of the
- X! argument descriptor for the matched argument, (2) the possi-
- X! ble argument string for that matched argument, and (3) a
- X! boolean filed that is TRUE only if the second parameter
- X! points to temporary storage (indicating that some copying
- X! may need to be done instead of just pointing to the same
- X! object).
- X
- X Once the argument translation routine is invoked, it is
- X responsible for converting the argument string to the
- X***************
- X*** 91,103 ****
- X still match other arguments.
- X
- X
- X! PSEUDO-TYPES
- X ArgUsage is used to specify an argument that causes the com-
- X mand usage to be printed.
- X
- X ArgDummy is used to force an item to show up in usage-
- X messages but the item itself is never matched against any
- X! argumenmts from the command-line.
- X
- X ArgEnd is used by Amiga style command-lines to indicate an
- X argument that forces all remaining arguments to be con-
- X--- 91,103 ----
- X still match other arguments.
- X
- X
- X! PSEUDO-TYPES: argUsage, argDummy, argEnd
- X ArgUsage is used to specify an argument that causes the com-
- X mand usage to be printed.
- X
- X ArgDummy is used to force an item to show up in usage-
- X messages but the item itself is never matched against any
- X! arguments from the command-line.
- X
- X ArgEnd is used by Amiga style command-lines to indicate an
- X argument that forces all remaining arguments to be con-
- X***************
- X*** 108,114 ****
- X available for identification in the corresponding command-
- X line styles.
- X
- X! STRING-TYPES
- X ArgStr is one of the few argument translation routines that
- X actually uses the copyf flag. If copyf is true then the
- X string is duplicated.
- X--- 108,114 ----
- X available for identification in the corresponding command-
- X line styles.
- X
- X! STRING-TYPES: argStr
- X ArgStr is one of the few argument translation routines that
- X actually uses the copyf flag. If copyf is true then the
- X string is duplicated.
- X***************
- X*** 137,143 ****
- X
- X
- X
- X! CHARACTER-TYPES
- X ArgChar assigns the given character to the value referenced
- X by arg_valp(ad) (unless the argument is a vector in which
- X case the given character is appended to the end).
- X--- 137,143 ----
- X
- X
- X
- X! CHARACTER-TYPES: argChar
- X ArgChar assigns the given character to the value referenced
- X by arg_valp(ad) (unless the argument is a vector in which
- X case the given character is appended to the end).
- X***************
- X*** 150,156 ****
- X Unlike argStr, argChar will translate character escape
- X sequences such as `\n' and `\012'.
- X
- X! INTEGER-TYPES
- X Each of these functions converts the given string to the
- X desired integral type. The value may be specified as an
- X octal number by specifying the first digit to be 0. Simi-
- X--- 150,156 ----
- X Unlike argStr, argChar will translate character escape
- X sequences such as `\n' and `\012'.
- X
- X! INTEGER-TYPES: argInt, argShort, argLong
- X Each of these functions converts the given string to the
- X desired integral type. The value may be specified as an
- X octal number by specifying the first digit to be 0. Simi-
- X***************
- X*** 157,167 ****
- X larly, If the first two characters are `0x' then the number
- X is treated as hexadecimal.
- X
- X! FLOATING-POINT-TYPES
- X Each of these functions converts the given string to the
- X desired floating-point type.
- X
- X! BOOLEAN-TYPES
- X ArgBool and argSBool set a boolean value (if no value is
- X given). ArgUBool unsets a boolean value (if no value is
- X given). ArgTBool toggles a boolean value (if no value is
- X--- 157,167 ----
- X larly, If the first two characters are `0x' then the number
- X is treated as hexadecimal.
- X
- X! FLOATING-POINT-TYPES: argFloat, argDouble
- X Each of these functions converts the given string to the
- X desired floating-point type.
- X
- X! BOOLEAN-TYPES: argBool, argSBool, argTBool, argUBool
- X ArgBool and argSBool set a boolean value (if no value is
- X given). ArgUBool unsets a boolean value (if no value is
- X given). ArgTBool toggles a boolean value (if no value is
- X***************
- X*** 209,215 ****
- X ``1'', ``+'', ``ON'', or ``TRUE''
- X The corresponding boolean flag is set to TRUE.
- X
- X! LIST TYPES
- X The listStr argument translation routine is only intended
- X for use on behalf of arguments that have the ARGLIST flag
- X enabled. It will allocate space for a new node (and for the
- X--- 209,215 ----
- X ``1'', ``+'', ``ON'', or ``TRUE''
- X The corresponding boolean flag is set to TRUE.
- X
- X! LIST TYPES: listStr
- X The listStr argument translation routine is only intended
- X for use on behalf of arguments that have the ARGLIST flag
- X enabled. It will allocate space for a new node (and for the
- X***************
- X*** 229,235 ****
- X followed by the type of the items in the vector.
- X
- X SEE ALSO
- X! parseargs(3), parseargs(1),
- X
- X
- X
- X--- 229,235 ----
- X followed by the type of the items in the vector.
- X
- X SEE ALSO
- X! parseargs(3), parseargs(3), parsecntl(1),
- X
- X
- X
- X*** parseargs1.txt.OLD Tue Mar 26 12:01:48 1991
- X--- parseargs1.txt Tue Mar 26 11:59:52 1991
- X***************
- X*** 81,87 ****
- X the desired type, and diagnoses problems such as missing
- X arguments, extra arguments, and argument values that are
- X syntactically incorrect. Other behavior such as prompting
- X! the user for missing arguments and ignoring as command-line
- X syntax may be specified on the command-line through the use
- X of various options, or through the use of the ``PARSECNTL''
- X environment variable.
- X--- 81,87 ----
- X the desired type, and diagnoses problems such as missing
- X arguments, extra arguments, and argument values that are
- X syntactically incorrect. Other behavior such as prompting
- X! the user for missing arguments and ignoring bad command-line
- X syntax may be specified on the command-line through the use
- X of various options, or through the use of the ``PARSECNTL''
- X environment variable.
- X***************
- X*** 233,243 ****
- X ``sh'', ``csh'', ``ksh'', ``tcsh'', ``bash'', ``rc'',
- X ``awk'', and ``perl'' as valid command interpreters. Awk
- X output is slightly different from that of the other shells
- X! in that the actual variable setting are not printed but each
- X! line of an associative array is printed (the first field is
- X! the array index, the second is the value for that index).
- X! If no shell is specified, then the Bourne shell (``sh'')
- X! will be assumed.
- X
- X If the user wishes to use a value other than ``TRUE'' for a
- X boolean flag that is true, this may be done using the -T
- X--- 233,243 ----
- X ``sh'', ``csh'', ``ksh'', ``tcsh'', ``bash'', ``rc'',
- X ``awk'', and ``perl'' as valid command interpreters. Awk
- X output is slightly different from that of the other shells
- X! in that the actual variable settings are not printed but
- X! each line of an associative array is printed (the first
- X! field is the array index, the second is the value for that
- X! index). If no shell is specified, then the Bourne shell
- X! (``sh'') will be assumed.
- X
- X If the user wishes to use a value other than ``TRUE'' for a
- X boolean flag that is true, this may be done using the -T
- X***************
- X*** 274,280 ****
- X parseargs to be able to distinguish options to itself from
- X options for the calling program.
- X
- X! The default behavior of parseargs is allow both single-
- X character options and long-options (keywords) on the
- X command-line. The user may specify that only options (long-
- X options) are to be permitted by specifying the -o (-l)
- X--- 274,280 ----
- X parseargs to be able to distinguish options to itself from
- X options for the calling program.
- X
- X! The default behavior of parseargs is to allow both single-
- X character options and long-options (keywords) on the
- X command-line. The user may specify that only options (long-
- X options) are to be permitted by specifying the -o (-l)
- X***************
- X*** 340,349 ****
- X positional parameters of the calling program will be re-
- X assigned to the contents of the argument list.
- X
- X! For the awk and perl, if the variable name corresponding to
- X! the ARGLIST argument is ``ARGV'', then the positional
- X! parameters of the calling program will be re-assigned to the
- X! contents of the argument list.
- X Bourne Shell Argument Lists
- X
- X For the Bourne shell, if the associated variable name is NOT
- X--- 340,349 ----
- X positional parameters of the calling program will be re-
- X assigned to the contents of the argument list.
- X
- X! For awk and perl, if the variable name corresponding to the
- X! ARGLIST argument is ``ARGV'', then the positional parameters
- X! of the calling program will be re-assigned to the contents
- X! of the argument list.
- X Bourne Shell Argument Lists
- X
- X For the Bourne shell, if the associated variable name is NOT
- X***************
- X*** 471,479 ****
- X
- X For perl, each argument list is considered an array and is
- X set using the following syntax:
- X! @name=( arg1 , arg2 , ... )
- X
- X-
- X The word-lists used by the C shell, the arrays used by the
- X Korn shell, the Plan 9 shell, awk, perl, and the positional
- X parameters used by all shells (if overwritten by parseargs)
- X--- 471,479 ----
- X
- X For perl, each argument list is considered an array and is
- X set using the following syntax:
- X! @name=( arg1 , arg2 , ... );
- X! A Final Note on Argument Lists
- X
- X The word-lists used by the C shell, the arrays used by the
- X Korn shell, the Plan 9 shell, awk, perl, and the positional
- X parameters used by all shells (if overwritten by parseargs)
- X***************
- X*** 493,499 ****
- X is parsed. The command-line will over-ride any options that
- X are specified in this environment variable (except that
- X ARGLISTs and ARGVECs set in ``CMD_ARGS'' will be appended
- X! from the command-line
- X
- X It is important to note that the contents of the
- X ``CMD_ARGS'' environment variable are NOT expanded by the
- X--- 493,499 ----
- X is parsed. The command-line will over-ride any options that
- X are specified in this environment variable (except that
- X ARGLISTs and ARGVECs set in ``CMD_ARGS'' will be appended
- X! from the command-line if they are selected).
- X
- X It is important to note that the contents of the
- X ``CMD_ARGS'' environment variable are NOT expanded by the
- X***************
- X*** 552,558 ****
- X Ignore any unrecognized or improperly specified
- X command-line arguments and continue execution of the
- X program. Normally, if an argument is unmatched (or is
- X! improperly specified), a usage message is printed
- X program execution is terminated.
- X
- X OptsOnly
- X--- 552,558 ----
- X Ignore any unrecognized or improperly specified
- X command-line arguments and continue execution of the
- X program. Normally, if an argument is unmatched (or is
- X! improperly specified), a usage message is printed and
- X program execution is terminated.
- X
- X OptsOnly
- X***************
- X*** 599,612 ****
- X
- X
- X
- X! Setting this flag cause character-case to be ignored
- X when attempting to match single-character argument
- X names (i.e. causes "-i" and "-I" will be considered
- X equivalent).
- X
- X If the environment variable ``PARSECNTL'' is empty or
- X! undefined, then parsing behavior set by the programmer is
- X! used. If the programmer has not explicitly used
- X parsecntl(3) to modify the parsing behavior, then the
- X default behavior will be ``Flags1st'' for Unix systems,
- X ``!Prompt + !Ignore'' for AmigaDOS systems, ``CaseIgnore''
- X--- 599,612 ----
- X
- X
- X
- X! Setting this flag causes character-case to be ignored
- X when attempting to match single-character argument
- X names (i.e. causes "-i" and "-I" will be considered
- X equivalent).
- X
- X If the environment variable ``PARSECNTL'' is empty or
- X! undefined, then the parsing behavior set by the programmer
- X! is used. If the programmer has not explicitly used
- X parsecntl(3) to modify the parsing behavior, then the
- X default behavior will be ``Flags1st'' for Unix systems,
- X ``!Prompt + !Ignore'' for AmigaDOS systems, ``CaseIgnore''
- X*** parseargs3.txt.OLD Tue Mar 26 12:01:58 1991
- X--- parseargs3.txt Tue Mar 26 12:00:11 1991
- X***************
- X*** 15,21 ****
- X int fparseargs( FILE *fp, ARGDESC *argd )
- X int lparseargs( ArgList *argls, ARGDESC *argd )
- X int sparseargs( char *str, ARGDESC *argd )
- X! int vparseargs( ARGDESC *argd, ... )
- X void usage( const ARGDESC *argd )
- X
- X DESCRIPTION
- X--- 15,21 ----
- X int fparseargs( FILE *fp, ARGDESC *argd )
- X int lparseargs( ArgList *argls, ARGDESC *argd )
- X int sparseargs( char *str, ARGDESC *argd )
- X! int vparseargs( ARGDESC *argd, int argc, ... )
- X void usage( const ARGDESC *argd )
- X
- X DESCRIPTION
- X***************
- X*** 39,45 ****
- X ``-v\nval'' is a not).
- X
- X Given an ArgList and an argdesc array, lparseargs will parse
- X! arguments in a file in much the same manner as parseargs.
- X
- X Given a single string and an argdesc array, sparseargs will
- X parse arguments from a string in much the same manner as
- X--- 39,46 ----
- X ``-v\nval'' is a not).
- X
- X Given an ArgList and an argdesc array, lparseargs will parse
- X! arguments in an ArgList in much the same manner as par-
- X! seargs.
- X
- X Given a single string and an argdesc array, sparseargs will
- X parse arguments from a string in much the same manner as
- X***************
- X*** 56,62 ****
- X to parse, and a (possibly NULL terminated) list of
- X argument-strings and parses them in much the same manner as
- X parseargs. Unlike sparseargs, vparseargs assumes that all
- X- parameters are already split up into tokens, hence any
- X
- X
- X
- X--- 57,62 ----
- X***************
- X*** 71,79 ****
- X
- X
- X
- X! whitespace characters contained in any of the string-
- X! parameters are used as is (and will be considered a part of
- X! an argument name or value).
- X
- X
- X Given an argdesc array, usage will print the usage for the
- X--- 71,80 ----
- X
- X
- X
- X! parameters are already split up into tokens, hence any whi-
- X! tespace characters contained in any of the string-parameters
- X! are used as is (and will be considered a part of an argument
- X! name or value).
- X
- X
- X Given an argdesc array, usage will print the usage for the
- X***************
- X*** 103,109 ****
- X
- X argTypePtr_t ad_type;
- X This field is a pointer to a type conversion function
- X! (such as the ones provided in argtype(3). The type
- X conversion function is responsible for verifying the
- X validity of the argument, allocating any necessary
- X storage for its internal representation, and converting
- X--- 104,110 ----
- X
- X argTypePtr_t ad_type;
- X This field is a pointer to a type conversion function
- X! (such as the ones provided in argtype(3)). The type
- X conversion function is responsible for verifying the
- X validity of the argument, allocating any necessary
- X storage for its internal representation, and converting
- X***************
- X*** 121,128 ****
- X
- X ARBPTR ad_valp;
- X This field is a generic pointer to the storage used to
- X! represent the internal value of the command-line argu-
- X! ment. It may be a pointer to a number, a boolean value,
- X
- X
- X
- X--- 122,128 ----
- X
- X ARBPTR ad_valp;
- X This field is a generic pointer to the storage used to
- X! represent the internal value of the command-line
- X
- X
- X
- X***************
- X*** 137,163 ****
- X
- X
- X
- X! a string, a list, or anything else for which there
- X! exists a corresponding arg-type function to use in the
- X! ad_type field. In the case of of parseargs(1) this
- X! field must be the name of the corresponding shell vari-
- X! able which eventually hold the value of the argument
- X! given on the command-line.
- X
- X const char *ad_prompt;
- X This field contains the long-name of the argument and
- X an optional description (the description must be
- X separated from the long-name by at least one whitespace
- X! characters and may optionally be enclosed in a set of
- X balanced delimiters (such as parentheses, curly-braces,
- X! square-brackets, or angle-brackets. If the long-name
- X contains any uppercase characters, then the substring
- X of long-name consisting of all uppercase characters is
- X! used as the argument name and the entire long-name is
- X! used as the name of the argument-value (if a value my
- X! be supplied). The long-name may be matched by supplying
- X! a unique prefix of either the argument name or the
- X! argument-value name.
- X
- X DEFINING ARGDESC ARRAYS
- X When defining an argdesc array, the first item in the list
- X--- 137,164 ----
- X
- X
- X
- X! argument. It may be a pointer to a number, a boolean
- X! value, a string, a list, or anything else for which
- X! there exists a corresponding arg-type function to use
- X! in the ad_type field. In the case of of parseargs(1)
- X! this field must be the name of the corresponding shell
- X! variable which will eventually hold the value of the
- X! argument given on the command-line.
- X
- X const char *ad_prompt;
- X This field contains the long-name of the argument and
- X an optional description (the description must be
- X separated from the long-name by at least one whitespace
- X! character and may optionally be enclosed in a set of
- X balanced delimiters (such as parentheses, curly-braces,
- X! square-brackets, or angle-brackets). If the long-name
- X contains any uppercase characters, then the substring
- X of long-name consisting of all uppercase characters is
- X! used as the argument keyword and the entire long-name
- X! is used as the name of the argument (if a value my be
- X! supplied). The long-name may be matched by supplying a
- X! unique prefix of either the argument keyword or the
- X! argument name.
- X
- X DEFINING ARGDESC ARRAYS
- X When defining an argdesc array, the first item in the list
- X***************
- X*** 186,197 ****
- X ENDOFARGS
- X };
- X
- X- This describes a program accepting up to three flag argu-
- X- ments and one or two positional arguments, plus a list of
- X- additional file arguments. Only the first positional
- X
- X
- X
- X Page 3
- X
- X
- X--- 187,197 ----
- X ENDOFARGS
- X };
- X
- X
- X
- X
- X+
- X+
- X Page 3
- X
- X
- X***************
- X*** 203,209 ****
- X
- X
- X
- X! argument is required. The possible flags (in UNIX) are:
- X
- X -c count An integer repetition count. This defaults to
- X two.
- X--- 203,212 ----
- X
- X
- X
- X! This describes a program accepting up to three flag argu-
- X! ments and one or two positional arguments, plus a list of
- X! additional file arguments. Only the first positional argu-
- X! ment is required. The possible flags (in UNIX) are:
- X
- X -c count An integer repetition count. This defaults to
- X two.
- X***************
- X*** 251,263 ****
- X "-x value"); Its mere presence (or lack thereof) on the
- X command-line is sufficient to determine the necessary
- X action(s) to take (as in "-x"). Boolean argument types
- X! and Pseudo-argument types automatically default to ARG-
- X! NOVAL.
- X
- X- ARGVALOPT
- X
- X
- X-
- X Page 4
- X
- X
- X--- 254,263 ----
- X "-x value"); Its mere presence (or lack thereof) on the
- X command-line is sufficient to determine the necessary
- X action(s) to take (as in "-x"). Boolean argument types
- X! and Pseudo-argument types automatically default to
- X
- X
- X
- X Page 4
- X
- X
- X***************
- X*** 269,274 ****
- X--- 269,277 ----
- X
- X
- X
- X+ ARGNOVAL.
- X+
- X+ ARGVALOPT
- X This flag is used to indicate that the command-line
- X argument takes a value (as in "-s string" or
- X "/str=string") but that the value to this command-line
- X***************
- X*** 318,326 ****
- X line.
- X
- X ARGVALSEP
- X- The value to this argument was supplied in a separate
- X- argv element from the argument itself (as in "-x value"
- X- as opposed to "-xvalue").
- X
- X
- X
- X--- 321,326 ----
- X***************
- X*** 335,340 ****
- X--- 335,344 ----
- X
- X
- X
- X+ The value to this argument was supplied in a separate
- X+ argv element from the argument itself (as in "-x value"
- X+ as opposed to "-xvalue").
- X+
- X ARGKEYWORD
- X This argument was matched as a keyword (long-form) on
- X the command-line and not as a single character.
- X***************
- X*** 383,395 ****
- X provided.
- X
- X arg_description(ad)
- X- Return the description string (or an empty string if no
- X- description was given) for this argument.
- X
- X- ARG_isPOSITIONAL(ad)
- X
- X
- X-
- X Page 6
- X
- X
- X--- 387,395 ----
- X***************
- X*** 401,406 ****
- X--- 401,410 ----
- X
- X
- X
- X+ Return the description string (or an empty string if no
- X+ description was given) for this argument.
- X+
- X+ ARG_isPOSITIONAL(ad)
- X Evaluates to TRUE if this argument may be positionally
- X matched.
- X
- X***************
- X*** 449,461 ****
- X arrays. The "old-style" is still accepted (but if used it is
- X recommended that the STARTOFARGS macro is used in conjunc-
- X tion with ENDOFARGS). An example use of these macros
- X- (which, with one exception, all begin with ``CMD'') follows:
- X- #include <parseargs.h>
- X
- X- static BOOL bflag = FALSE;
- X
- X
- X-
- X Page 7
- X
- X
- X--- 453,461 ----
- X***************
- X*** 467,472 ****
- X--- 467,476 ----
- X
- X
- X
- X+ (which, with one exception, all begin with ``CMD'') follows:
- X+ #include <parseargs.h>
- X+
- X+ static BOOL bflag = FALSE;
- X static char *arg1 = CHARNULL;
- X static char *arg2 = CHARNULL;
- X
- X***************
- X*** 515,524 ****
- X keywords to display command-usage for all command-line
- X styles. In Addition, for VMS style commands, the qualifiers
- X /INPUT=file, /OUTPUT=file, and /ERROR=file, may be used to
- X- redirect stdin, stdout, and stderr (respectively) to a file.
- X- For AmigaDOS style commands, the keyword ``ENDKWDS'' may be
- X- used to disable parsing for any more keywords on the
- X- command-line.
- X
- X
- X
- X--- 519,524 ----
- X***************
- X*** 533,538 ****
- X--- 533,543 ----
- X
- X
- X
- X+ redirect stdin, stdout, and stderr (respectively) to a file.
- X+ For AmigaDOS style commands, the keyword ``ENDKWDS'' may be
- X+ used to disable parsing for any more keywords on the
- X+ command-line.
- X+
- X SUPPLYING DEFAULT ARGUMENTS
- X Programs that use parseargs may be given default arguments
- X under UNIX and PCs through the use of environment variables
- X***************
- X*** 543,549 ****
- X is parsed. The command-line will over-ride any options that
- X are specified in this environment variable (except that
- X ARGLISTs and ARGVECs set in ``CMD_ARGS'' will be appended
- X! from the command-line
- X
- X It is important to note that the contents of the
- X ``CMD_ARGS'' environment variable are NOT expanded by the
- X--- 548,554 ----
- X is parsed. The command-line will over-ride any options that
- X are specified in this environment variable (except that
- X ARGLISTs and ARGVECs set in ``CMD_ARGS'' will be appended
- X! from the command-line if they are selected).
- X
- X It is important to note that the contents of the
- X ``CMD_ARGS'' environment variable are NOT expanded by the
- X***************
- X*** 579,593 ****
- X Prompt
- X Prompt the user for any missing arguments that are
- X required on the command-line. No special escaping or
- X! quoting is performed on the user input. Required argu-
- X! ments that expect a list of values will be repeatedly
- X! prompted for (one item per line) until a blank line
- X! (followed by a carriage return) is entered.
- X
- X- Ignore
- X
- X
- X-
- X Page 9
- X
- X
- X--- 584,593 ----
- X Prompt
- X Prompt the user for any missing arguments that are
- X required on the command-line. No special escaping or
- X! quoting is performed on the user input. Required
- X
- X
- X
- X Page 9
- X
- X
- X***************
- X*** 599,609 ****
- X
- X
- X
- X Ignore any unrecognized or improperly specified
- X command-line arguments and continue execution of the
- X program. Normally, if an argument is unmatched (or is
- X! improperly specified), a usage message is printed pro-
- X! gram execution is terminated.
- X
- X OptsOnly
- X Under UNIX, setting this flag will disable the parsing
- X--- 599,614 ----
- X
- X
- X
- X+ arguments that expect a list of values will be repeat-
- X+ edly prompted for (one item per line) until a blank
- X+ line (followed by a carriage return) is entered.
- X+
- X+ Ignore
- X Ignore any unrecognized or improperly specified
- X command-line arguments and continue execution of the
- X program. Normally, if an argument is unmatched (or is
- X! improperly specified), a usage message is printed and
- X! program execution is terminated.
- X
- X OptsOnly
- X Under UNIX, setting this flag will disable the parsing
- X***************
- X*** 635,659 ****
- X positional argument.
- X
- X CaseIgnore
- X! Setting this flag cause character-case to be ignored
- X when attempting to match single-character argument
- X names (i.e. causes "-i" and "-I" will be considered
- X equivalent).
- X
- X If the environment variable ``PARSECNTL'' is empty or unde-
- X! fined, then parsing behavior set by the programmer is used.
- X! If the programmer has not explicitly used parsecntl(3) to
- X! modify the parsing behavior, then the default behavior will
- X! be ``Flags1st'' for Unix systems, ``!Prompt + !Ignore'' for
- X! AmigaDOS systems, ``CaseIgnore'' for MS-DOS and OS/2 sys-
- X! tems, and ``Prompt'' for VMS systems.
- X
- X- USAGE MESSAGES
- X- Through the use of an environment variable (or a VMS sym-
- X- bol), the user may control the syntax and the verbosity of
- X
- X
- X-
- X Page 10
- X
- X
- X--- 640,659 ----
- X positional argument.
- X
- X CaseIgnore
- X! Setting this flag causes character-case to be ignored
- X when attempting to match single-character argument
- X names (i.e. causes "-i" and "-I" will be considered
- X equivalent).
- X
- X If the environment variable ``PARSECNTL'' is empty or unde-
- X! fined, then the parsing behavior set by the programmer is
- X! used. If the programmer has not explicitly used par-
- X! secntl(3) to modify the parsing behavior, then the default
- X! behavior will be ``Flags1st'' for Unix systems, ``!Prompt +
- X! !Ignore'' for AmigaDOS systems, ``CaseIgnore'' for MS-DOS
- X
- X
- X
- X Page 10
- X
- X
- X***************
- X*** 665,670 ****
- X--- 665,675 ----
- X
- X
- X
- X+ and OS/2 systems, and ``Prompt'' for VMS systems.
- X+
- X+ USAGE MESSAGES
- X+ Through the use of an environment variable (or a VMS sym-
- X+ bol), the user may control the syntax and the verbosity of
- X the command-usage messages that are printed by parseargs.
- X The desired level of verbosity may be set by defining the
- X environment variable ``USAGECNTL" to be a combination of
- X***************
- X*** 712,725 ****
- X LongOpts
- X Long-option syntax is displayed.
- X
- X- KeyWords
- X- Same as LongOpts.
- X
- X
- X
- X-
- X-
- X-
- X Page 11
- X
- X
- X--- 717,725 ----
- X***************
- X*** 731,736 ****
- X--- 731,739 ----
- X
- X
- X
- X+ KeyWords
- X+ Same as LongOpts.
- X+
- X If the environment variable ``USAGECNTL'' is empty or unde-
- X fined, then the default usage level (which is presently
- X ``Verbose + Options'') will be used.
- X***************
- X*** 751,765 ****
- X ArgList structure. L_NEXT returns the address of the next
- X item in the list and L_STRING returns the string-value of
- X the current list-item. L_FLAGS return the arg-flags for a
- X! given item in the list. With non-multivalued, only the flags
- X! in the argument descriptor are needed; lists and vectors
- X! however need a set of flags for each item they contain. Once
- X! an arg-list has been created, it may be deallocated using
- X! the function listFree. ListFree takes two parameters, the
- X! first of which is the address of the first item in the arg-
- X! list, and the second of which is a boolean value that is
- X! TRUE only if each value pointed to by each item should also
- X! be deallocated.
- X
- X An alternative to argument-lists is argument vectors (or
- X arg-vectors). Arg-vectors use the ARGVEC flag instead of
- X--- 754,766 ----
- X ArgList structure. L_NEXT returns the address of the next
- X item in the list and L_STRING returns the string-value of
- X the current list-item. L_FLAGS return the arg-flags for a
- X! given item in the list. With non-multivalued arguments, only
- X! the flags in the argument descriptor are needed; lists and
- X! vectors however need a set of flags for each item they con-
- X! tain. Once an arg-list has been created, it may be deallo-
- X! cated using the function listFree. ListFree takes one param-
- X! eter: first of which is the address of the first item in the
- X! arg-list.
- X
- X An alternative to argument-lists is argument vectors (or
- X arg-vectors). Arg-vectors use the ARGVEC flag instead of
- X***************
- X*** 782,788 ****
- X
- X ( StrVec.array[ StrVec.count ] == (char *)NULL )
- X
- X- is always true, and character-vectors will always have an
- X
- X
- X
- X--- 783,788 ----
- X***************
- X*** 797,802 ****
- X--- 797,803 ----
- X
- X
- X
- X+ is always true, and character-vectors will always have an
- X extra NUL-character at the end such that:
- X
- X ( CharVec.array[ CharVec.count ] == '\0' )
- X***************
- X*** 848,854 ****
- X printf( "String[%d]=%s, flags=%x\n",
- X i, StrVec.array[i], StrVec.flags[i] );
- X
- X- for ( i = 0 ; i < NumVec.count ; i++ )
- X
- X
- X
- X--- 849,854 ----
- X***************
- X*** 863,868 ****
- X--- 863,869 ----
- X
- X
- X
- X+ for ( i = 0 ; i < NumVec.count ; i++ )
- X printf( "Number[%d]=%s, flags=%x\n",
- X i, NumVec.array[i], NumVec.flags[i] );
- X
- X***************
- X*** 887,900 ****
- X being converted. Its main use is to find the location in
- X which to store the converted value, located in
- X argd->ad_valp. The string value to be converted is passed
- X! in argp (which will be NULL if the ARGNOVAL flag was set for
- X the corresponding entry in the arg-descriptor table). The
- X! copyf flag is TRUE if the argp string value must be copied
- X when saved. Most non-string types are copied implicitly
- X (for example, integer arguments are stored in binary form,
- X so the original string value need not be saved), so this
- X argument can usually be ignored. Put simply, this flag is
- X! TRUE when argp points to a temporary buffer area.
- X
- X If the type function successfully converts the value, and
- X uses the entire value, it should return TRUE. If the type
- X--- 888,901 ----
- X being converted. Its main use is to find the location in
- X which to store the converted value, located in
- X argd->ad_valp. The string value to be converted is passed
- X! in vp (which will be NULL if the ARGNOVAL flag was set for
- X the corresponding entry in the arg-descriptor table). The
- X! copyf flag is TRUE if the vp string value must be copied
- X when saved. Most non-string types are copied implicitly
- X (for example, integer arguments are stored in binary form,
- X so the original string value need not be saved), so this
- X argument can usually be ignored. Put simply, this flag is
- X! TRUE when vp points to a temporary buffer area.
- X
- X If the type function successfully converts the value, and
- X uses the entire value, it should return TRUE. If the type
- X***************
- X*** 914,920 ****
- X #define REALLOC(ptr,size) ((! ptr) ? malloc(size) : realloc(ptr, size))
- X typedef ARGVEC_T(FILE *) FILEvec_t;
- X
- X- BOOL argReadFile( ARGDESC *ad, char *vp, BOOL copyf )
- X
- X
- X
- X--- 915,920 ----
- X***************
- X*** 929,934 ****
- X--- 929,935 ----
- X
- X
- X
- X+ BOOL argReadFile( ARGDESC *ad, char *vp, BOOL copyf )
- X {
- X register FILE *fp;
- X fp = fopen(vp, "r");
- X***************
- X*** 979,986 ****
- X
- X Under VAX/VMS and AmigaDOS, single-character options are not
- X used and the ``long'' name (in the prompt field of an argu-
- X! ment descriptor) is always used to match for possible argu-
- X! ments (or keywords, or qualifiers).
- X
- X
- X
- X--- 980,986 ----
- X
- X Under VAX/VMS and AmigaDOS, single-character options are not
- X used and the ``long'' name (in the prompt field of an argu-
- X! ment descriptor) is always used to match for possible
- X
- X
- X
- X***************
- X*** 995,1000 ****
- X--- 995,1002 ----
- X
- X
- X
- X+ arguments (or keywords, or qualifiers).
- X+
- X For all supported operating systems, a long option may be
- X matched in one of two ways: it may match all uppercase char-
- X acters in the prompt field, or it may match all characters
- X***************
- X*** 1045,1052 ****
- X pe_NOMATCH
- X Unable to match the named argument. This occurs when
- X the argument keyword name passed to parsecntl (using
- X- the pc_ARGFLAGS functions code) was found in the given
- X- argdesc-array or in its default-list.
- X
- X
- X
- X--- 1047,1052 ----
- X***************
- X*** 1061,1066 ****
- X--- 1061,1069 ----
- X
- X
- X
- X+ the pc_ARGFLAGS functions code) was found in the given
- X+ argdesc-array or in its default-list.
- X+
- X pe_BADMODE
- X Bad mode for given command in parsecntl. This occurs
- X when pc_WRITE or pc_RDWR mode is passed to parsecntl in
- X***************
- X*** 1110,1121 ****
- X Hence multiple ``leading dash'' arguments may specified as
- X follows:
- X
- X- -f-dash_arg1 -f-dash_arg2 ...
- X
- X
- X
- X-
- X-
- X Page 17
- X
- X
- X--- 1113,1121 ----
- X***************
- X*** 1127,1139 ****
- X
- X
- X
- X BUGS
- X When a non-multivalued argument appears more than once on
- X the command-line then only the last value supplied is used.
- X A problem occurs however in the following scenario: suppose
- X! `-s' is an option that takes an optional string argument (nd
- X! suppose `-x' is some boolean flag). Then if the following
- X! command-line is issued:
- X
- X command -s string -x -s
- X
- X--- 1127,1141 ----
- X
- X
- X
- X+ -f-dash_arg1 -f-dash_arg2 ...
- X+
- X BUGS
- X When a non-multivalued argument appears more than once on
- X the command-line then only the last value supplied is used.
- X A problem occurs however in the following scenario: suppose
- X! `-s' is an option that takes an optional string argument
- X! (and suppose `-x' is some boolean flag). Then if the follow-
- X! ing command-line is issued:
- X
- X command -s string -x -s
- X
- X***************
- X*** 1159,1166 ****
- X argument flags ARGPOS, ARGVALOPT, ARGVALREQ, ARGVALGIVEN,
- X ARGNOVAL, and ARGVEC; and VAX/VMS version and IBM-PC version
- X by Brad Appleton
- X-
- X-
- X
- X
- X
- X--- 1161,1166 ----
- XNo differences encountered
- END_OF_FILE
- if test 36746 -ne `wc -c <'PATCH'`; then
- echo shar: \"'PATCH'\" unpacked with wrong size!
- fi
- # end of 'PATCH'
- fi
- echo shar: End of shell archive.
- exit 0
-
- exit 0 # Just in case...
- --
- Kent Landfield INTERNET: kent@sparky.IMD.Sterling.COM
- Sterling Software, IMD UUCP: uunet!sparky!kent
- Phone: (402) 291-8300 FAX: (402) 291-4362
- Please send comp.sources.misc-related mail to kent@uunet.uu.net.
-